#include <iostream>

struct blob
{
    int a;
    char b[10];
};
#if 0
void recycle(blob b)
{
    std::cout << "match the prototype \"void recycle(blob b);\"" << std::endl;
}

void recycle(const blob b)
{
    std::cout << "match the prototype \"void recycle(const blob b);\"" << std::endl;
}
#else
void recycle(blob & b)
{
    std::cout << "match the prototype \"void recycle(blob & b);\"" << std::endl;
}

void recycle(const blob & b)
{
    std::cout << "match the prototype \"void recycle(const blob & b);\"" << std::endl;
}
#endif

void DoVerifyExactMatch()
{
    blob ink = {25, "spots"};
    recycle(ink);

    const blob pencil = {5, "spots"};
    recycle(pencil);
}

int main(int argc, char const *argv[])
{
    DoVerifyExactMatch();
    return 0;
}
